package dao

import (
	"time"
)

// 这是 MorningReading 的全局公开dao对象，被service层调用!
var MorningReadingDao = morningReadingDao{}

// 技术晨读表
// 这是 morning_reading表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type MorningReading struct {
	Id       int32     `json:"id" form:"id" db:"id" v:"id"`
	Content  string    `json:"content" form:"content" db:"content" v:"content"`         // 晨读内容
	TType    int8      `json:"t_type" form:"t_type" db:"t_type" v:"t_type"`             // 晨读类别:0-Go技术晨读;1-综合技术晨读
	Inner    int32     `json:"inner" form:"inner" db:"inner" v:"inner"`                 // 本站文章id，如果外站文章，则为0
	Url      string    `json:"url" form:"url" db:"url" v:"url"`                         // 文章链接，本站文章时为空
	MoreUrl  string    `json:"more_url" form:"more_url" db:"more_url" v:"more_url"`     // 可能顺带推荐多篇文章；url逗号分隔
	ClickNum int32     `json:"click_num" form:"click_num" db:"click_num" v:"click_num"` // 点击数
	Username string    `json:"username" form:"username" db:"username" v:"username"`     // 发布人
	Ctime    time.Time `json:"ctime" form:"ctime" db:"ctime" v:"ctime"`
}

// 注意:这是 MorningReading 的私有dao对象，只能在dao层内使用!
type morningReadingDao struct {
	InsertTemplate func(arg MorningReading) (int64, error)                //插入一条记录
	UpdateTemplate func(arg MorningReading) (int64, error)                //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                          `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (MorningReading, error)                 `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg MorningReadingList) ([]MorningReading, error) //模糊分页查询
}

/*
// 这是 morning_reading 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type MorningReadingPostman struct {
id
content
t_type
inner
url
more_url
click_num
username
ctime

}*/

// 这是 morning_reading 表的批量请求参数
type MorningReadingReq struct {
	List []MorningReading `json:"list" form:"list"`
}

// 这是 morningReadingDao.List()方法的请求参数
type MorningReadingList struct {
	Page
}
